/*
 *
 *  * Copyright (C) 2021 Huawei Device Co., Ltd.
 *  * Licensed under the Apache License, Version 2.0 (the "License");
 *  * you may not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *     http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *  *
 *
 */

package com.xuexiang.xui_lib.component.textview.marqueen;

import ohos.agp.components.AttrSet;
import ohos.agp.components.Button;
import ohos.app.Context;

/**
 * 自定义的标签button控件
 *
 * @since 2021-04-09
 */
public class LabelButtonView extends Button {
    private LabelViewHelper utils;

    /**
     * 构造方法
     *
     * @param context 上下文
     */
    public LabelButtonView(Context context) {
        this(context, null);
    }

    /**
     * 构造方法
     *
     * @param context 上下文
     * @param attrs UI属性对象
     */
    public LabelButtonView(Context context, AttrSet attrs) {
        this(context, attrs, "");
    }

    /**
     * 构造方法
     *
     * @param context 上下文
     * @param attrs UI属性对象
     * @param styleName 设置style名称
     */
    public LabelButtonView(Context context, AttrSet attrs, String styleName) {
        super(context, attrs, styleName);
        utils = new LabelViewHelper(context, attrs);
        addDrawTask((component, canvas) -> {
            utils.onDraw(canvas, getWidth(), getHeight());
        });
    }

    @Override
    public void addDrawTask(DrawTask task) {
        super.addDrawTask(task);
        task.onDraw(this, mCanvasForTaskOverContent);
    }

    /**
     * 设置标签高度
     *
     * @param height 设置值
     */
    public void setLabelHeight(int height) {
        utils.setLabelHeight(this, height);
    }

    /**
     * 获取标签高度
     *
     * @return 返回label高度
     */
    public int getLabelHeight() {
        return utils.getLabelHeight();
    }

    /**
     * 设置标签距离
     *
     * @param distance 设置值
     */
    public void setLabelDistance(int distance) {
        utils.setLabelDistance(this, distance);
    }

    /**
     * 获取标签距离
     *
     * @return 返回距离
     */
    public int getLabelDistance() {
        return utils.getLabelDistance();
    }

    /**
     * 判断标签是否可见方法
     *
     * @return 返回是否可见标记
     */
    public boolean isLabelVisual() {
        return utils.isLabelVisual();
    }

    /**
     * 设置标签是否可见方法
     *
     * @param isEnable 可见标记
     */
    public void setLabelVisual(boolean isEnable) {
        utils.setLabelVisual(this, isEnable);
    }

    /**
     * 获取标签方向
     *
     * @return 返回label方向值
     */
    public int getLabelOrientation() {
        return utils.getLabelOrientation();
    }

    /**
     * 设置标签方向
     *
     * @param orientation 方向
     */
    public void setLabelOrientation(int orientation) {
        utils.setLabelOrientation(this, orientation);
    }

    /**
     * 获取标签颜色值
     *
     * @return 返回颜色值
     */
    public int getLabelTextColor() {
        return utils.getLabelTextColor();
    }

    /**
     * 设置标签颜色值
     *
     * @param textColor 颜色值
     */
    public void setLabelTextColor(int textColor) {
        utils.setLabelTextColor(this, textColor);
    }

    /**
     * 获取标签背景颜色
     *
     * @return 返回颜色值
     */
    public int getLabelBackgroundColor() {
        return utils.getLabelBackgroundColor();
    }

    /**
     * 设置标签背景颜色
     *
     * @param backgroundColor 颜色值
     */
    public void setLabelBackgroundColor(int backgroundColor) {
        utils.setLabelBackgroundColor(this, backgroundColor);
    }

    /**
     * 获取标签内容
     *
     * @return 返回label的Text
     */
    public String getLabelText() {
        return utils.getLabelText();
    }

    /**
     * 设置标签内容
     *
     * @param text 内容
     */
    public void setLabelText(String text) {
        utils.setLabelText(this, text);
    }

    /**
     * 获取标签字体大小
     *
     * @return 返回text大小
     */
    public int getLabelTextSize() {
        return utils.getLabelTextSize();
    }

    /**
     * 设置标签字体大小
     *
     * @param textSize 字体大小
     */
    public void setLabelTextSize(int textSize) {
        utils.setLabelTextSize(this, textSize);
    }

    /**
     * 获取标签style值
     *
     * @return 返回text style值
     */
    public int getLabelTextStyle() {
        return utils.getLabelTextStyle();
    }

    /**
     * 设置标签style值
     *
     * @param textStyle 字体style
     */
    public void setLabelTextStyle(int textStyle) {
        utils.setLabelTextStyle(this, textStyle);
    }

    /**
     * 获取标签字体
     *
     * @return 返回text 字体值
     */
    public String getLabelTextFont() {
        return utils.getLabelTextFont();
    }

    /**
     * 设置标签字体
     *
     * @param textFont 字体属性
     */
    public void setLabelTextFont(String textFont) {
        utils.setLabelTextFont(this, textFont);
    }
}
